<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
    <PythonExport
        Name="BezierCurvePy"
        Namespace="Part"
        Twin="GeomBezierCurve"
        TwinPointer="GeomBezierCurve"
        PythonName="Part.BezierCurve"
        FatherInclude="Mod/Part/App/BoundedCurvePy.h"
        Include="Mod/Part/App/Geometry.h"
        Father="BoundedCurvePy"
        FatherNamespace="Part"
        Constructor="true">
        <Documentation>
            <Author Licence="LGPL" Name="Werner Mayer" EMail="wmayer@users.sourceforge.net"/>
            <UserDocu>Describes a rational or non-rational Bezier curve:
                -- a non-rational Bezier curve is defined by a table of poles (also called control points)
                -- a rational Bezier curve is defined by a table of poles with varying weights

                Constructor takes no arguments.

                Example usage:
                    p1 = Base.Vector(-1, 0, 0)
                    p2 = Base.Vector(0, 1, 0.2)
                    p3 = Base.Vector(1, 0, 0.4)
                    p4 = Base.Vector(0, -1, 1)

                    bc = BezierCurve()
                    bc.setPoles([p1, p2, p3, p4])
                    curveShape = bc.toShape()</UserDocu>
        </Documentation>
        <Attribute Name="Degree" ReadOnly="true">
            <Documentation>
                <UserDocu>Returns the polynomial degree of this Bezier curve,
which is equal to the number of poles minus 1.</UserDocu>
            </Documentation>
            <Parameter Name="Degree" Type="Long"/>
        </Attribute>
        <Attribute Name="MaxDegree" ReadOnly="true">
            <Documentation>
                <UserDocu>Returns the value of the maximum polynomial degree of any
Bezier curve curve. This value is 25.</UserDocu>
            </Documentation>
            <Parameter Name="MaxDegree" Type="Long"/>
        </Attribute>
        <Attribute Name="NbPoles" ReadOnly="true">
            <Documentation>
                <UserDocu>Returns the number of poles of this Bezier curve.</UserDocu>
            </Documentation>
            <Parameter Name="NbPoles" Type="Long"/>
        </Attribute>
        <Attribute Name="StartPoint" ReadOnly="true">
            <Documentation>
                <UserDocu>Returns the start point of this Bezier curve.</UserDocu>
            </Documentation>
            <Parameter Name="StartPoint" Type="Object"/>
        </Attribute>
        <Attribute Name="EndPoint" ReadOnly="true">
            <Documentation>
                <UserDocu>Returns the end point of this Bezier curve.</UserDocu>
            </Documentation>
            <Parameter Name="EndPoint" Type="Object"/>
        </Attribute>
        <Methode Name="isRational" Const="true">
            <Documentation>
                <UserDocu>Returns false if the weights of all the poles of this Bezier curve are equal.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="isPeriodic" Const="true">
            <Documentation>
                <UserDocu>Returns false.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="isClosed" Const="true">
            <Documentation>
                <UserDocu>Returns true if the distance between the start point and end point of
                    this Bezier curve is less than or equal to gp::Resolution().</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="increase">
            <Documentation>
                <UserDocu>increase(Int=Degree)
Increases the degree of this Bezier curve to Degree.
As a result, the poles and weights tables are modified.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="insertPoleAfter">
            <Documentation>
                <UserDocu>Inserts after the pole of index.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="insertPoleBefore">
            <Documentation>
                <UserDocu>Inserts before the pole of index.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="removePole">
            <Documentation>
                <UserDocu>Removes the pole of index Index from the table of poles of this Bezier curve.
If this Bezier curve is rational, it can become non-rational.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="segment">
            <Documentation>
                <UserDocu>Modifies this Bezier curve by segmenting it.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="setPole">
            <Documentation>
                <UserDocu>Set a pole of the Bezier curve.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getPole" Const="true">
            <Documentation>
                <UserDocu>Get a pole of the Bezier curve.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getPoles" Const="true">
            <Documentation>
                <UserDocu>Get all poles of the Bezier curve.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="setPoles">
            <Documentation>
                <UserDocu>Set the poles of the Bezier curve.

                Takes a list of 3D Base.Vector objects.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="setWeight">
            <Documentation>
                <UserDocu>(id, weight) Set a weight of the Bezier curve.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getWeight" Const="true">
            <Documentation>
                <UserDocu>Get a weight of the Bezier curve.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getWeights" Const="true">
            <Documentation>
                <UserDocu>Get all weights of the Bezier curve.</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="getResolution" Const="true">
            <Documentation>
                <UserDocu>Computes for this Bezier curve the parametric tolerance (UTolerance)
for a given 3D tolerance (Tolerance3D).
If f(t) is the equation of this Bezier curve, the parametric tolerance
ensures that:
|t1-t0| &lt; UTolerance =&quot;&quot;==&gt; |f(t1)-f(t0)| &lt; Tolerance3D</UserDocu>
            </Documentation>
        </Methode>
        <Methode Name="interpolate">
            <Documentation>
                <UserDocu>Interpolates a list of constraints.
                Each constraint is a list of a point and some optional derivatives
                An optional list of parameters can be passed. It must be of same size as constraint list.
                Otherwise, a simple uniform parametrization is used.
                Example :
                bezier.interpolate([[pt1, deriv11, deriv12], [pt2,], [pt3, deriv31]], [0, 0.4, 1.0])</UserDocu>
            </Documentation>
        </Methode>
    </PythonExport>
</GenerateModel>
